نحوه استفاده از socket در لاراول

نحوه استفاده از socket در لاراول

"در این آموزش، نحوه استفاده از event broadcasting با استفاده از redis، socket.io و laravel-echo-server را در برنامه laravel 8/7 گام به گام راهنمایی می کنیم. ما به شما مثالی از real time broadcast message با استفاده از socket io در لاراول 8/7/6 می زنیم.""
شما به راحتی می توانید این کار را انجام دهید، فقط باید چند مرحله را برای ایجاد ارسال رویداد با استفاده از real time broadcasting در لاراول 9 دنبال کنید.
لاراول موضوع event broadcasting را ارائه می دهد، که بسیار جالب است و همچنین اجرای آن با redis و socket.io به طور خاص دشوار است. اما ما به شما آموزش گام به گام نحوه ارسال پیام با rest و socket io را در برنامه لاراول 6 می دهدیم.
برای انجام این کار زیر فقط باید چند مرحله را دنبال کنید. پس بیایید مراحل زیر را دنبال کنیم و به عنوان اعلان زمان واقعی با لاراول انجام دهیم.
 
مرحله 1: Laravel 9 را نصب کنید
اول از همه، ما باید برنامه جدید لاراول 9 را با استفاده از دستور زیر دریافت کنیم، زیرا از ابتدا پیش می رویم، بنابراین خط فرمان یا ترمینال خود را باز کنید و دستور زیر را اجرا کنید:
composer create-project --prefer-dist laravel/laravel blog
 
مرحله 2: نصب predis
در این مرحله باید predis را به عنوان دستور زیر نصب کنیم. پس بیایید دستور زیر را برای نصب predis در برنامه لاراول اجرا کنیم.
composer require predis/predis
 
مرحله 3: ایجاد event
در اینجا، ما باید رویدادی را برای پخش ایجاد کنیم. در فایل event باید کانال را تنظیم کنیم و message array را با کلید ارسال کنیم. بنابراین، اجازه دهید دستور زیر را برای ایجاد رویداد اجرا کنیم.
 
php artisan make:event SendMessage
 
 
app/Events/SendMessage.php
<?php
  
namespace App\Events;
  
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
  
class SendMessage implements ShouldBroadcastNow
{
    use InteractsWithSockets, SerializesModels;
  
    public $data = ['asas'];
  
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct()
    {
  
    }
  
    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('user-channel');
    }
  
    /**
     * The event's broadcast name.
     *
     * @return string
     */
    public function broadcastAs()
    {
        return 'UserEvent';
    }
    /**
     * The event's broadcast name.
     *
     * @return string
     */
    public function broadcastWith()
    {
        return ['title'=>'This notification from ItSolutionStuff.com'];
    }
}
مرحله 4: فایل کانفیگ را به روز کنید
در این مرحله باید تنظیمات کانفیگ را به فایل env و فایل کانفیگ دیتابیس اضافه کنیم. شما باید فایل env را با BROADCAST_DRIVER به عنوان پیکربندی redis و پایگاه داده و همچنین پیکربندی redis پایگاه داده تنظیم کنید.
بیایید فایل ها را به روز کنیم:
.env

BROADCAST_DRIVER=redis
  
DB_DATABASE=blog_chat
DB_USERNAME=root
DB_PASSWORD=root
  
REDIS_HOST=localhost
REDIS_PASSWORD=null
EDIS_PORT=6379
   
LARAVEL_ECHO_PORT=6001
 
config/database.php
 

....
  
'redis' => [
	
	  'client' => env('REDIS_CLIENT', 'predis'),
	
	  'options' => [
		  'cluster' => env('REDIS_CLUSTER', 'redis'),
		  'prefix' => env('REDIS_PREFIX', ''),
	  ],
	
	  'default' => [
		  'url' => env('REDIS_URL'),
		  'host' => env('REDIS_HOST', '127.0.0.1'),
		  'password' => env('REDIS_PASSWORD', null),
		  'port' => env('REDIS_PORT', 6379),
		  'database' => env('REDIS_DB', 0),
	  ],
	
	  'cache' => [
		  'url' => env('REDIS_URL'),
		  'host' => env('REDIS_HOST', '127.0.0.1'),
		  'password' => env('REDIS_PASSWORD', null),
		  'port' => env('REDIS_PORT', 6379),
		  'database' => env('REDIS_CACHE_DB', 1),
	  ],
	
],
 ....
 
اکنون باید migration را نیز اجرا کنیم.
 

php artisan migrate
 
مرحله 5: Laravel Echo Server را نصب کنید
در این مرحله باید laravel-echo-server را در سیستم و پروژه شما نصب کنیم. پس بیایید دستور زیر را برای نصب laravel-echo-server و init اجرا کنیم.
 
Install laravel-echo-server
 

npm install -g laravel-echo-server
 
Init laravel-echo-server
 

laravel-echo-server init
 
شما باید کانفیگ خود را تنظیم کنید. می توانید اسکرین شات زیر را ببینید:
 
 
فایل جدید laravel-echo-server.json مانند زیر ایجاد می کند:
 
laravel-echo-server.json
 

{
	"authHost": "http://localhost",
	"authEndpoint": "/broadcasting/auth",
	"clients": [],
	"database": "redis",
	"databaseConfig": {
		"redis": {},
		"sqlite": {
			"databasePath": "/database/laravel-echo-server.sqlite"
		}
	},
	"devMode": true,
	"host": null,
	"port": "6001",
	"protocol": "http",
	"socketio": {},
	"secureOptions": 67108864,
	"sslCertPath": "",
	"sslKeyPath": "",
	"sslCertChainPath": "",
	"sslPassphrase": "",
	"subscribers": {
		"http": true,
		"redis": true
	},
	"apiOriginAllow": {
		"allowCors": false,
		"allowOrigin": "",
		"allowMethods": "",
		"allowHeaders": ""
	}
}
 
مرحله 6: npm، laravel-echo، socket.io-client را نصب کنید
در اینجا، npm را نصب می کنیم و همچنین laravel-echo، socket.io-client را نصب می کنیم. همچنین شما نیاز به کانفیگ دارید. پس بیایید دستور زیر را اجرا کنیم:
 

npm install

npm install laravel-echo

npm install socket.io-client
 
اکنون باید فایل جدید laravel-echo-setup.js را در فایل assets ایجاد کنیم.
 
resources/assets/js/laravel-echo-setup.js
 

import Echo from 'laravel-echo';
   
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ":" + window.laravel_echo_port
});
 
اکنون باید فایل میکس را مانند زیر اضافه کنید:
 
webpack.mix.js

...
mix.js('resources/assets/js/laravel-echo-setup.js', 'public/js');
 
حالا باید دستور npm run را اجرا کنیم:
 

npm run dev
 
مرحله 7: فایل View را به روز کنید
اکنون باید فایل خوشامدگویی خود را به روز کنیم. بنابراین می توانید کدهای ما را مانند زیر ببینید:
 
resources/views/welcome.blade.php
 
 
مرحله 8: Call Event
در اینجا، ما مسیر آزمایشی جدیدی را برای فراخوانی event ایجاد خواهیم کرد. بنابراین، اجازه دهید مسیر زیر را به صورت زیر اضافه کنیم:
 
routes/web.php
 

Route::get('/t', function () {
    event(new \App\Events\SendMessage());
    dd('Event Run Successfully.');
});
 
 
اکنون ما آماده اجرای مثال خود هستیم، اما از موارد زیر برای اجرای پروژه خود اطمینان حاصل کنید.
شما باید سرور redis را در سیستم یا سرور خود نصب کنید. آن را می توانید با استفاده از دستور زیر نصب کنید:
 


sudo apt install redis-server
 
پس از آن می توانید laravel echo server را مانند دستور زیر راه اندازی کنید:
 

laravel-echo-server start
 
اکنون می توانید پروژه را با استفاده از دستور زیر اجرا کنید:
 

php artisan serve
 
اکنون می توانید URL زیر را در مرورگر خود باز کنید:
 

http://localhost:8000/
 
اکنون می توانید event خود را با این نشانی اینترنتی فعال کنید:
 

http://localhost:8000/t
 
می توانید نتیجه را مانند تصویر زیر مشاهده کنید:
 
 
 
 
 
 
آرین

آرین هستم عاشق تولید محتوا

ارسال دیدگاه

برای ارسال دیدگاه ابتدا باید وارد حساب کاربری خود شوید